//## begin module%3B94E3F700D5.cm preserve=no
//	  %X% %Q% %Z% %W%
//## end module%3B94E3F700D5.cm

//## begin module%3B94E3F700D5.cp preserve=no
//	+----------------------------------------------+
//	| SVMBR - A program for training SVMs          |
//	+----------------------------------------------+
//	| * Creator, modeling, coding:                 |
//	|    Marcelo Barros de Almeida                 |
//	|    barros@smar.com.br                        |
//	|    http://litc.cpdee.ufmg.br/~barros/        |
//	| * Coding, improvements, bug fixes:           |
//	|    Bernardo Penna                            |
//	|    bprc@brfree.com.br                        |
//	+----------------------------------------------+
//
//	 Copyright(c) 2002 by Marcelo Barros de Almeida
//	                            All rights reserved
//
//	-[CVS]------------------------------------------
//	$Author$
//	$Date$
//	$Source$
//	$Name$
//	$Revision$
//	------------------------------------------------
//## end module%3B94E3F700D5.cp

//## Module: cache%3B94E3F700D5; Package specification
//## Subsystem: <Top Level>
//## Source file: D:\textotese\svmbr\src\cache.h

#ifndef cache_h
#define cache_h 1

//## begin module%3B94E3F700D5.additionalIncludes preserve=no
//## end module%3B94E3F700D5.additionalIncludes

//## begin module%3B94E3F700D5.includes preserve=yes
//## end module%3B94E3F700D5.includes

// data
#include "data.h"
// kernel
#include "kernel.h"
// global
#include "global.h"
//## begin module%3B94E3F700D5.declarations preserve=no
//## end module%3B94E3F700D5.declarations

//## begin module%3B94E3F700D5.additionalDeclarations preserve=yes
#include "pqueue.h"
//## end module%3B94E3F700D5.additionalDeclarations


//## begin Cache%3B94DEC300F8.preface preserve=yes
//## end Cache%3B94DEC300F8.preface

//## Class: Cache%3B94DEC300F8
//## Category: Utility package%3D7B4A100170
//## Subsystem: <Top Level>
//## Persistence: Transient
//## Cardinality/Multiplicity: n

class Cache 
{
  //## begin Cache%3B94DEC300F8.initialDeclarations preserve=yes
  //## end Cache%3B94DEC300F8.initialDeclarations

  public:
    //## Constructors (specified)
      //## Operation: Cache%999602356
      Cache (Kernel* kernelp, Data* datap, INT sizev);

    //## Destructor (generated)
      ~Cache();


    //## Other Operations (specified)
      //## Operation: getKernelRow%999602353
      REAL * getKernelRow (INT ri);

      //## Operation: evalKernel%999602354
      REAL evalKernel (INT ri, INT ci);

      //## Operation: del%1013528658
      INT del (INT idx);

      //## Operation: add%1013528659
      VOID add (INT idx);

      //## Operation: SetChunk%1013528660
      VOID SetChunk (INT *chunkSet);

      //## Operation: DontUseChunk%1013528661
      VOID DontUseChunk ();

    // Additional Public Declarations
      //## begin Cache%3B94DEC300F8.public preserve=yes
      //## end Cache%3B94DEC300F8.public

  protected:
    // Additional Protected Declarations
      //## begin Cache%3B94DEC300F8.protected preserve=yes
      //## end Cache%3B94DEC300F8.protected

  private:
    // Additional Private Declarations
      //## begin Cache%3B94DEC300F8.private preserve=yes
      //## end Cache%3B94DEC300F8.private

  private: //## implementation
    // Data Members for Class Attributes

      //## Attribute: size%3B94E2C200E5
      //## begin Cache::size%3B94E2C200E5.attr preserve=no  private: INT {U} 
      INT size;
      //## end Cache::size%3B94E2C200E5.attr

      //## Attribute: allocated%3B94E2CA0385
      //## begin Cache::allocated%3B94E2CA0385.attr preserve=no  private: INT * {U} 
      INT *allocated;
      //## end Cache::allocated%3B94E2CA0385.attr

      //## Attribute: cache%3B94E2FE0037
      //## begin Cache::cache%3B94E2FE0037.attr preserve=no  private: REAL ** {U} 
      REAL **cache;
      //## end Cache::cache%3B94E2FE0037.attr

      //## Attribute: data%3B94E344038B
      //## begin Cache::data%3B94E344038B.attr preserve=no  private: Data * {U} 
      Data *data;
      //## end Cache::data%3B94E344038B.attr

      //## Attribute: kernel%3B94E3540348
      //## begin Cache::kernel%3B94E3540348.attr preserve=no  private: Kernel * {U} 
      Kernel *kernel;
      //## end Cache::kernel%3B94E3540348.attr

      //## Attribute: hashTable%3C693EFF02B9
      //## begin Cache::hashTable%3C693EFF02B9.attr preserve=no  private: INT * {U} 
      INT *hashTable;
      //## end Cache::hashTable%3C693EFF02B9.attr

      //## Attribute: valid%3C693F0C03D0
      //## begin Cache::valid%3C693F0C03D0.attr preserve=no  private: INT * {U} 
      INT *valid;
      //## end Cache::valid%3C693F0C03D0.attr

      //## Attribute: freelist%3C693F1203D8
      //## begin Cache::freelist%3C693F1203D8.attr preserve=no  private: PQueue * {U} 
      PQueue *freelist;
      //## end Cache::freelist%3C693F1203D8.attr

    // Additional Implementation Declarations
      //## begin Cache%3B94DEC300F8.implementation preserve=yes
      //## end Cache%3B94DEC300F8.implementation

};

//## begin Cache%3B94DEC300F8.postscript preserve=yes
//## end Cache%3B94DEC300F8.postscript

// Class Cache 

//## begin module%3B94E3F700D5.epilog preserve=yes
//## end module%3B94E3F700D5.epilog


#endif
